#include<cstdlib>
#include<iostream>
#include <memory>
#include <string>
#include <crtdbg.h> 
using namespace std;
class TestPaper
{
public:
	TestPaper(){}
	virtual ~TestPaper(){}
	void Question1(){
		cout<<"question1 selection____: A: OptionA;B Option B; C OptionC; D : OptionD  " << endl;
		cout<<"Answer:"<< Answer1()<<endl;
	}
	void Question2(){
		cout<<"question2 selection____: A: OptionA;B Option B; C OptionC; D : OptionD  " << endl;
		cout<<"Answer:"<< Answer2()<<endl;
	}
	void Question3(){
		cout<<"question3 selection____: A: OptionA;B Option B; C OptionC; D : OptionD  " << endl;
		cout<<"Answer:"<< Answer3()<<endl;
	}
	void Question4(){
		cout<<"question1 selection____: A: OptionA;B Option B; C OptionC; D : OptionD  " << endl;
		cout<<"Answer:"<< Answer4()<<endl;
	}
	virtual string Answer1() = 0;
	virtual string Answer2() = 0;
	virtual string Answer3() = 0;
	virtual string Answer4() = 0;
};
class TestPaperOfSutdent1 : public TestPaper
{
public:
	string Answer1(){return "A";}
	string Answer2(){return "B";}
	string Answer3(){return "C";}
	string Answer4(){return "D";}
};

class TestPaperOfSutdent2 : public TestPaper
{
public:
	string Answer1(){return "B";}
	string Answer2(){return "C";}
	string Answer3(){return "D";}
	string Answer4(){return "A";}
};

class TestPaperOfSutdent3 : public TestPaper
{
public:
	string Answer1(){return "C";}
	string Answer2(){return "B";}
	string Answer3(){return "D";}
	string Answer4(){return "A";}
};
int main()
{
	TestPaper* lStudent1 =  new TestPaperOfSutdent1();
	lStudent1->Question1();
	lStudent1->Question2();
	lStudent1->Question3();
	lStudent1->Question4();


	TestPaper* lStudent2 =  new TestPaperOfSutdent1();
	lStudent2->Question1();
	lStudent2->Question2();
	lStudent2->Question3();
	lStudent2->Question4();
	
	delete lStudent1;
	delete lStudent2;

	getchar();
}